package com.kotlin.flong.flow

import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.asFlow
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.onCompletion
import kotlinx.coroutines.runBlocking

/**
 * @Author:liangjl
 * @Date: 2020/7/11-21:13
 * @Eamil:jilongliang@sina.com
 * @Description:
 * Flow完成的声明式方法
 * 对于声明式方法来说，flow提供了一个名 onCompletion 中间操作，该操作会在flow完成收集后得到调用
 *
 */

private fun myMethod(): Flow<Int> = (1..10).asFlow()
fun main() = runBlocking<Unit> {

    //onCompletion是在终止操作完成之后才去执行的中间操作
    myMethod().onCompletion { println("onCompletion") }.collect { println(it) }

}